import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
    state: {
        //存放公共数据
         user : {
             username : '张三',
             age : 18,
             msg : ' hello world'
         }
    },
    getters:{
        //作为stroe计算函数操作
       changedAge:(state)=>{
           return state.user.age+15;
       }
    },
    mutations: {
        // 暴露给外部的方法，用来操作store的属性
        // 注意事项：只能执行同步方法，无法进行异步操作
        increment (state) {
            // 变更状态
            state.user.age++
        }
    },
    actions: {
        //用于异步操作，弥补mutations无法做操作的缺陷。
        //能在这里直接调用mutations的方法。
        incrementAsync ({ commit }) {
            setTimeout(() => {
                commit('increment')
            }, 1000)
        }
    },
    modules: {
        // // 防止store过于臃肿，可以将模块哦划分为小模块，从而便于维护
        // a: moduleA,
        // b: moduleB
    }

// const moduleA = {
//     state: () => ({  }),
//     mutations: {  },
//     actions: {  },
//     getters: {  }
// }
//
// const moduleB = {
//     state: () => ({  }),
//     mutations: {  },
//     actions: {  }
// }


})

export default store;





